/*
 * IResult.h
 *
 *  Created on: 05.06.2012
 *      Author: Caffeine
 */

#ifndef IRESULT_H_
#define IRESULT_H_

#include <irrlicht.h>
namespace irr {
namespace db {

/**
 * @class IResult
 * Класс, который хранит в себе результаты запросов к базе данных.
 */
class IResult: public irr::IReferenceCounted {
public:
	/**
	 * Констурктор
	 */
	IResult(){}

	/**
	 * Диструктор. Уничтожает все данные, которые хранит в себе
	 */
	virtual ~IResult(){}

	/**
	 * Возвращяет количество записей в результате
	 *
	 * @return количество записей в результате
	 * */
	virtual irr::u32 getRowCount()=0;

	/**
	 * Возвращяет количество колонок в результате
	 *
	 * @return количество колонок в результате
	 * */
	virtual irr::u32 getColCount()=0;

	/**
	 * Возвращяет имя колонки с указанным индексом
	 *
	 * @param index номер колонки, начинается от 0
	 * @return название колонки. Если колонки с указанным индексом не существует, то вернёт пустую строку
	 * */
	virtual irr::core::stringc getColName(irr::u32 index)=0;

	/**
	 * Возвращяет значение ячейки
	 *
	 * @return значение ячейки
	 * */
	virtual irr::core::stringc getValue()=0;

	/**
	 * Переводит курсор результата к следующему столбцу
	 *
	 * @return TRUE если удалось перевести курсор, иначе FALSE
	 * */
	virtual bool nextCol()=0;

	/**
	 * Переводит курсор результата к следующей записи
	 *
	 * @return TRUE если удалось перевести курсор, иначе FALSE
	 * */
	virtual bool nextRow()=0;

	/**
	 * Возвращяет позицию чтения текущего столбца
	 *
	 * @return позиция чтения текущего столбца
	 * */
	virtual irr::u32 getColPosition()=0;

	/**
	 * Возвращяет позицию чтения текущей записи
	 *
	 * @return позиция чтения текущей записи*/
	virtual irr::u32 getRowPosition()=0;
};

} /* namespace db */
} /* namespace irr */
#endif /* IRESULT_H_ */
